home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_06_vol_cinematic_2.cog < prev    next >
Text File  |  1999-11-15  |  18KB  |  621 lines

  1. # Jones 3D Cog Script
  2. #
  3. # 06_VOL_Cinematic_2.cog
  4. #
  5. # Sophia helps Indy & is captured by Russians.
  6. #
  7. # [CM & revised by HB]
  8. #
  9. # (C) 1999 LucasArts Entertainment Co. All Rights Reserved
  10. # ==============================================================================
  11.  
  12. symbols
  13.  
  14. # ................................. MESSAGES ...................................
  15.  
  16.     message        startup
  17.     ## message        crossed
  18.     message        entered
  19.  
  20. # ................................ KEYFRAMES ...................................
  21.  
  22.     keyframe    in_pushHat=0in_figithat_4_4.key            local
  23.     keyframe    in_rtarmup=0in_armsout_1_1.key            local
  24.     keyframe    in_ltarmup=0in_leftarm_1_1.key            local
  25.     
  26.     keyframe    in_armsAREcrossed=0in_stand2.key        local
  27.     keyframe    in_handsONhips=0in_stand4.key            local
  28.     keyframe    in_DOcrossarms=0in_stand1_bd_2.key           local
  29.     keyframe    in_handsTOhips=0in_stand1_bd_4.key           local
  30.  
  31.     keyframe    so_handsONhips=0so_stand1.key            local
  32.     keyframe    so_handsTOhips=0so_stand2_bd_1.key        local
  33.     keyframe    so_hiwave=0so_waveleft_1_1.key            local
  34.     keyframe    so_WaveRT=0so_waveright_1_1.key         local
  35.  
  36.     keyframe    so_headshake=0so_headshake_2_2.key        local
  37.     keyframe    so_psychic=0so_psychicpowers_2_2.key    local
  38.     keyframe    so_odd=0so_somethingstrange_2_2.key        local
  39.     keyframe    so_kickladder=0so_kickladder_1_2.key    local
  40.  
  41.     
  42.     keyframe    so_captured=0so_socapture.key            local
  43.     keyframe    cm_grab=01h_socapture.key                local
  44.     
  45.  
  46.     keyframe    unroll=vol_ladr_rope.key                local
  47.     
  48. # .................................. SOUNDS ....................................
  49.     
  50.     sound        in_commies=inxj064.wav                    local    # commies here first...
  51.     sound        in_sophia=At04j01.wav                    local    # sophia?
  52.     sound        so_welcome=VL03S01.WAV                    local    # welcome...
  53.     sound        in_whatdoing=VL03J02.WAV                local    # what doing here...
  54.     sound        so_sameasyou=VL03S03.WAV                local    # found door...
  55.     sound        in_nopartner=VL03J04.WAV                local    # wait! no partner...
  56.     sound        so_whosaid=VL03S05.WAV                    local    # who said partner...
  57.  
  58.     sound        so_danger=VL03S06.WAV                    local    # be careful, danger...
  59.     sound        in_believeall=VL03J07.WAV                local    # believe anything...
  60.     sound        so_strange=VL03S08.WAV                    local    # something strange...
  61.     sound        so_indee=VL03S09.WAV                    local    # indeeee
  62.  
  63.     sound        cm_restricted=Inxh1015.wav                local    # restricted area (Russki)
  64.     
  65.     sound        russ_cue=mus_gen_russremin3.wav            local    # russian music cue
  66.     sound        russ_bold=mus_gen_russbold_shrt2.wav    local    # sophia abduction cue
  67.     sound        sophia_cue=mus_vol_sophia1.wav            local    # sophia reintroduction cue    placeholder
  68.     sound        ladderunroll=vol_ropeladder_throw.wav    local    # ladder sound effect
  69.     
  70. # ................................ ENGINE REFS .................................
  71.  
  72.     template    tpl_sophia=sophia                        local
  73.     template    tpl_ladder=SophiaVOL                    local    # odd, huh?
  74.  
  75. # .................................. THINGS ....................................
  76.  
  77.     thing        player                                    local
  78.  
  79.     thing        indy
  80.     thing        sophia
  81.     thing        commie1                                    nolink
  82.     thing        commie2
  83.  
  84.     thing        grndcrate0                                
  85.     thing        grndcrate1                                
  86.     thing        grndcrate2                                
  87.  
  88.     thing        door                                    nolink
  89.     thing        ladder                                    nolink
  90.     thing        worklite_2                                nolink
  91.     thing        worklite_3                                nolink
  92.  
  93.     thing        cam_1                                    nolink
  94.     thing        cam_2                                    nolink
  95.     thing        cam_3                                    nolink
  96.     thing        cam_4                                    nolink
  97.     thing        cam_5                                    nolink
  98.     thing        cam_6                                    nolink
  99.     thing        cam_7
  100.  
  101.     thing        ct_1                                    nolink
  102.     thing        ct_2                                    nolink
  103.     thing        ct_3a                                    nolink
  104.     thing        ct_3b                                    nolink
  105.     thing        ct_4                                    nolink
  106.     thing        ct_5                                    nolink
  107.     thing        ct_6a                                    nolink
  108.     thing        ct_6b                                    nolink
  109.  
  110.     thing        in_mk_1                                    nolink
  111.     thing        in_mk_2                                    nolink
  112.     thing        in_mk_3                                    nolink
  113.     thing        in_mk_4                                    nolink
  114.     thing        in_mkcomEND                                nolink
  115.  
  116.     thing        so_mk_1                                    nolink
  117.     thing        so_mk_2                                    nolink
  118.     thing        so_mk_3                                    nolink
  119.     thing        so_mk_4                                    nolink
  120.  
  121.     thing        cm_mk_1                                    nolink
  122.     thing        cm_mk_2                                    nolink
  123.  
  124.     thing        note_cam_1                                nolink
  125.     thing        note_ct_1                                nolink
  126.     thing        note_mk_1                                nolink
  127.  
  128.     thing        headThing                                local # thingRef var
  129.     thing        headLookThing                            local # thingRef var
  130.     thing        camPosThing                                local # thingRef var
  131.     thing        sophasset                                local
  132.     thing        laddasset                                local
  133.  
  134. # ............................ ENGINE REFERENCES ...............................
  135.  
  136.     sector        commiesector
  137.  
  138.     surface        sophface
  139.  
  140.     surface        dismountface
  141.                         
  142.     surface        ladderface_1                            
  143.     surface        ladderface_2
  144.     surface        ladderface_3
  145.     
  146.     surface        startpushface                            mask=0x080 # listens for crate
  147.     surface        endpushface                                mask=0x080 # listens for crate
  148.  
  149. # ................................. ROUTINES ...................................
  150.  
  151.     flex        backtoplay                                local
  152.     flex        OpenDoor                                local
  153.     flex        scene                                    local
  154.     
  155. # ................................. VARIABLES ..................................
  156.             
  157.     vector        camPos                                    local
  158.     
  159.     flex        in_rotRate                                local
  160.     flex        so_rotRate                                local
  161.  
  162.     flex        duration=1.77                            local # define per Derek
  163.  
  164.     int            curWeapon                                local
  165.     int            lighterweapon=13                        local # define
  166.     
  167.     int            curcam                                    local
  168.     int            cursound1                                local
  169.     int            cursound2                                local
  170.     int            cursound3                                local
  171.  
  172.     int            in_keyTrack1                            local
  173.     int            so_keyTrack1                            local
  174.     int            cm_keyTrack1                            local
  175.     int            ld_keyTrack1                            local
  176.  
  177.     int            in_colltype                                local
  178.     int            liteCollType                            local
  179.  
  180.     int            commietalk=0                            local
  181.     int            doneclimbing=0                            local
  182.     
  183. end
  184.  
  185. # ==============================================================================
  186.  
  187. code
  188.  
  189. # ..............................................................................
  190.  
  191. startup:
  192.  
  193.     player = GetLocalPlayerThing();
  194.     
  195.     # no pushing the ground crates
  196.     ClearThingFlags(grndcrate0, 0x40000000);
  197.     ClearThingFlags(grndcrate1, 0x40000000);
  198.     ClearThingFlags(grndcrate2, 0x40000000);
  199.     
  200.     # Prep actors...
  201.     SetThingFlags(indy, 0x80000);
  202.     SetThingFlags(sophia, 0x80000);
  203.     SetThingFlags(commie1, 0x80000);
  204.     SetThingFlags(commie2, 0x80000);
  205. #    AISetMode(commie2, 0x2000);
  206.     AISetCutSceneMode(commie1);
  207.     
  208.     in_rotRate = GetThingMaxRotVel(indy);
  209.     so_rotRate = GetThingMaxRotVel(sophia);
  210.  
  211.     # Prep the set...    
  212.     ClearSurfaceFlags(ladderface_1, 0x2000);
  213.     ClearSurfaceFlags(ladderface_2, 0x2000);
  214.     liteCollType = GetCollideType(worklite_2);
  215.     in_colltype = GetCollideType(indy);
  216.     
  217.     SetCollideType(ladder, 3); # must collide
  218.     AISetCutSceneMode(indy);
  219.     AISetCutSceneMode(sophia);
  220.  
  221.     return;
  222.  
  223. # ..............................................................................
  224.  
  225. entered:
  226.  
  227.     # NOTE: encounter Sophia, part 1
  228.     
  229.     If (GetSenderRef() == commiesector && commietalk == 0)
  230.     {
  231.         MakeMeStop();
  232.         StartCutScene(1);
  233.         commietalk = 1; # once only
  234.     
  235.         # music cue alludes to russian presence
  236.         cursound3 = PlaySoundLocal(russ_cue, 1.0, 1, 0x0, 0);
  237.  
  238.         TeleportThing(player, note_mk_1);
  239.     
  240.         # Cut to shot of room...
  241.         curcam = GetCurrentCamera();
  242.         SetCameraLookInterp(2, 0);
  243.         SetCameraPosInterp(2, 0);
  244.         SetCameraInterpSpeed(2, 2.0);
  245.         SetCameraFocus(2, note_cam_1);
  246.         SetCameraSecondaryFocus(2, note_ct_1);
  247.         SetCurrentCamera(2);
  248.         SetCameraFOV(50, 0, 0.0);
  249.         Sleep(0.01);
  250.         SetCameraFOV(90, 1, 2.0);
  251.     
  252.         # Handle the right props...
  253.         curWeapon = GetCurWeapon(player);
  254.         if (curWeapon != lighterweapon)
  255.         {
  256.             SelectWeapon(player, lighterweapon);
  257.         }
  258.                 
  259.         # Indy: "Whoa.  Looks like the commies got here first."
  260.         PlayVoice(player, in_commies, 1.0, 1); # 2.7s
  261.  
  262.         # Wrestle assets...
  263.         ClearThingFlags(sophia, 0x80000);
  264.         Sleep(1.0);
  265.         
  266.         # Restore player-chosen props...
  267.         if (curWeapon == 0)
  268.         {
  269.             DeselectWeaponWait(player);
  270.         }
  271.         else if (curWeapon != lighterweapon)
  272.         {
  273.             SelectWeapon(player, curWeapon);
  274.         }
  275.         Sleep(0.3);
  276.  
  277.         # Mood music!
  278.         PlaySoundLocal(sophia_cue, 1.0, 1, 0x0, 0); 
  279.             
  280.         # Cut to up-angle on Sophia...
  281.         SetCameraFocus(2, cam_2);
  282.         SetCameraSecondaryFocus(2, ct_2);
  283.         SetCameraFOV(65, 0, 0.0);
  284.         Sleep(0.01);
  285.         SetCameraFOV(30, 1, 1.7);
  286.         
  287.         # walk Sophia into shot...
  288.         AISetMoveSpeed(sophia, 1.0);
  289.         AISetLookThing(sophia, so_mk_1);
  290.         AISetMoveThing(sophia, so_mk_1, 0);
  291.  
  292.         # Sophia takes a stand...
  293.         AIWaitForStop(sophia);
  294.         so_keyTrack1 = PlayKey(sophia, so_handsONhips, 2, 0x10, 0);
  295.         PlayKey(sophia, so_handsTOhips, 4, 0x12, 0);
  296.  
  297.         # Switch actor Indy for player...
  298.         SetThingFlags(player, 0x80000); # hide player
  299.         ClearThingFlags(indy, 0x80000); # reveal actor
  300.         CopyPlayerHolsters(player, indy); # match props    
  301.         TeleportThing(indy, player);    
  302.  
  303.         # Sophia: "Hi, Indy.  Welcome to my little hothouse..."
  304.         cursound1 = PlayVoice(sophia, so_welcome, 1.0, 0);
  305.         PlayKey(sophia, so_hiwave, 4, 0x12, 0); # this anim has delayed start
  306.  
  307.         SetCameraLookInterp(2, 0);
  308.         SetCameraPosInterp(2, 0);
  309.         Sleep(1.0); # finish 1st sentence on this shot
  310.         
  311.         # move actor and player to final shot pos
  312.         TeleportThing(indy, in_mkcomEND);
  313.         TeleportThing(player, in_mkcomEND);
  314.         WaitForSound(cursound1);   
  315.  
  316.         # She drops the ladder...
  317.         StopKey(sophia, so_keyTrack1, 0.0);
  318.         Sleep(0.5);
  319.         
  320.         # ladder unrolls...
  321.         PlayKey(sophia, so_kickladder, 4, 0x12, 0);
  322.         PlayKey(ladder, unroll, 4, 0x14, 0);
  323.         PlaySoundLocal(ladderunroll, 1, 0, 0x0, 0);
  324.         Sleep(0.5);
  325.  
  326.          # Indy watches...
  327.         AIEnableHeadTracking(indy, ct_2);    
  328.         AISetLookThing(indy, ct_2);
  329.         MoveToFrame(ct_2, 1, 2.5); # num is rate
  330.         SetCameraFOV(60, 1, 2.3); # slightly different num is time
  331.         Sleep(2.0);
  332.  
  333.         # Indy: "Sophia..."
  334.         AIEnableHeadTracking(indy, sophia);    
  335.         PlayVoice(indy, in_sophia, 1.0, 0);
  336.         Sleep(0.5);
  337.         AIDisableHeadTracking(indy);
  338.         Sleep(1.0);
  339.  
  340.         # Make the ladder climbable...
  341.         SetSurfaceFlags(ladderface_1, 0x2000);
  342.         SetSurfaceFlags(ladderface_2, 0x2000);
  343.         SetSurfaceFlags(ladderface_3, 0x2000);
  344.  
  345.         # Move Sophia back from edge...
  346.         CopyOrientAndPos(so_mk_2, sophia);
  347.  
  348.         # no collide ladder
  349.         SetCollideType(ladder, 0);
  350.  
  351.         # Clean up...
  352.         camPosThing = cam_2;
  353.         call backtoplay;
  354.     }
  355.  
  356.     # NOTE: encounter Sophia, part 2
  357.  
  358.     If (GetSenderRef() == sophface && doneclimbing == 0)
  359.     {
  360.         # Prep for cutscene...
  361.         SetActorFlags(player, 0x200000);
  362.         StartCutscene(1);
  363.         curcam = GetCurrentCamera();
  364.         doneclimbing = 1; # do this scene once only
  365.    
  366.         # Prep actor...
  367.         ClearThingFlags(indy, 0x80000); # summon actor
  368.         SetThingFlags(indy, 0x10); # but keep him invisible
  369.         SetCollideType(indy, 0);
  370.         TeleportThing(indy, in_mk_1);
  371.         AISetLookThing(indy, sophia);
  372.         
  373.         # Switch actor Indy for player...
  374.         MakeMeStop();
  375.         Sleep(0.01);    
  376.         TeleportThing(indy, player);
  377.         SetThingFlags(player, 0x80000);
  378.         ClearThingFlags(indy, 0x10); # now show actor
  379.         CopyPlayerHolsters(player, indy);
  380.         AISetLookThing(sophia, indy);
  381.         Sleep(0.1);
  382.  
  383.         # Cut to Indy after standup...
  384.         SetCameraLookInterp(2, 0);
  385.         SetCameraPosInterp(2, 0);
  386.         SetCameraFocus(2, cam_3);
  387.         SetCameraSecondaryFocus(2, ct_3a);
  388.         SetCurrentCamera(2);
  389.         SetCameraFOV(50, 0, 0.0);
  390.         Sleep(0.01);
  391.         
  392.         # Track Indy over to Sophia...
  393.         SetCameraLookInterp(2, 1); # enable pan & tilt
  394.         SetCameraInterpSpeed(2, 2.0);
  395.         AISetMoveSpeed(indy, 1.0);
  396.         Sleep(0.01);
  397.         AISetLookThing(indy, sophia);
  398.         AISetMoveThing(indy, in_mk_2, 0);
  399.         Sleep(0.5);
  400.  
  401.         SetCameraSecondaryFocus(2, ct_3b);
  402.         Sleep(0.5);
  403.         AISetMoveSpeed(indy, 0.7);
  404.         MoveToFrame(cam_3, 1, 0.75);
  405.         SetCameraFOV(40, 1, 1.0);
  406.         Sleep(1.0);
  407.         AISetLookThing(sophia, indy);
  408.  
  409.         #Indy: "Sophia, what are you doing here?"
  410.         PlayKey(indy, in_ltarmup, 4, 0x12, 0);
  411.         cursound1 = PlayVoice(indy, in_whatdoing, 1.0, 0); # play early
  412.         Sleep(0.1);
  413.         so_keyTrack1 = PlayKey(sophia, so_handsONhips, 2, 0x10, 0);
  414.         PlayKey(sophia, so_handsTOhips, 4, 0x12, 1);
  415.         WaitForSound(cursound1);
  416.  
  417.         # Sophia: "Same thing you are.  I found the door.  Let's go."
  418.         cursound1 = PlayVoice(sophia, so_sameasyou, 1.0, 0);
  419.         Sleep(0.5);
  420.         PlayKey(sophia, so_WaveRT, 4, 0x12, 0);
  421.         WaitForSound(cursound1);
  422.  
  423.         # Cut to reverse on Indy over Sophia's shoulder...
  424.         SetThingFlags(worklite_2, 0x10); # get it out of my sight
  425.         SetCameraLookInterp(2, 0); # kill interp
  426.         SetCameraFocus(2, cam_4);
  427.         SetCameraSecondaryFocus(2, ct_4);
  428.         SetCameraFOV(40, 0, 0.0);
  429.  
  430.         # Indy: "Wait!  I'm not looking for a partner..."
  431.         cursound1 = PlayVoice(indy, in_nopartner, 1.0, 0);
  432.         PlayKey(indy, in_rtarmup, 4, 0x12, 1);
  433.         in_keyTrack1 = PlayKey(indy, in_armsAREcrossed, 2, 0x10, 0);
  434.         PlayKey(indy, in_DOcrossarms, 4, 0x12, 1);
  435.         WaitForSound(cursound1);
  436.  
  437.         # Cut back to Sophia...
  438.         ClearThingFlags(worklite_2, 0x10); # now I like it again
  439.         SetCameraFocus(2, cam_3);
  440.         SetCameraSecondaryFocus(2, ct_3b);
  441.  
  442.         SetCameraFOV(40, 0, 0.0);
  443.  
  444.         # Sophia: "Who said we're partners..."
  445.         cursound1 = PlayVoice(sophia, so_whosaid, 1.0, 0);
  446.         Sleep(1.5);
  447.  
  448.         # Cut to close-up of Sophia as she completes line, "...don't tell you everything."
  449.         SetCameraFocus(2, cam_5);
  450.         SetCameraSecondaryFocus(2, ct_5);
  451.         SetCameraFOV(25, 0, 0.0);
  452.         StopKey(sophia, so_keyTrack1, 0.5);
  453.         StopKey(indy, in_keyTrack1, 0.0); # indy relaxes offscreen
  454.  
  455.         # TO DO: headshake gesture here
  456.         Sleep(2.0);
  457.         PlayKey(sophia, so_headshake, 4, 0x12, 0);
  458.         WaitForSound(cursound1);
  459.  
  460.         # Camera follows Sophia to door...
  461.         SetCameraLookInterp(2, 1); # enable pan & tilt
  462.         SetCameraPosInterp(2, 1); # enable dolly
  463.         SetCameraInterpSpeed(2, 3.0);
  464.         SetCollideType(worklite_2, 0); # cam shouldn't bump lites
  465.         SetCollideType(worklite_3, 0);    
  466.         Sleep(0.01);
  467.         SetThingMaxRotVel(sophia, 250.0);
  468.         AISetLookThing(sophia, door);
  469.         AISetMoveSpeed(sophia, 1.0);
  470.         AISetMoveThing(sophia, so_mk_3, 0);
  471.         Sleep(0.1);
  472.         SetCameraFocus(2, cam_6); # dolly past worklites
  473.         SetCameraSecondaryFocus(2, ct_6a);
  474.         SetCameraFOV(40, 1, 2.5);
  475.         Sleep(1.0);
  476.         
  477.         # Indy follows...
  478.         SetThingMaxRotVel(indy, 125.0);
  479.         AISetLookThing(indy, in_mk_3);
  480.         AISetMoveSpeed(indy, 1.0);
  481.         AISetMoveThing(indy, in_mk_3, 0);    
  482.         AIWaitForStop(sophia);
  483.  
  484.         # She turns back toward Indy...
  485.         AISetLookThing(sophia, so_mk_4); # use this mark to align her capture anim
  486.         Sleep(0.5);
  487.  
  488.         # Sophia: "Be careful here...I sense danger."
  489.         cursound1 = PlayVoice(sophia, so_danger, 1.0, 0);
  490.  
  491.         # TO DO: 'psychic powers' gesture here
  492.         PlayKey(sophia, so_psychic, 4, 0x12, 0);
  493.  
  494.         AISetLookThing(indy, sophia);
  495.         Sleep(0.5);
  496.         # AIWaitForStop(indy);
  497.         AISetLookThing(sophia, so_mk_4);
  498.         WaitForSound(cursound1);
  499.         
  500.         # Indy: "I've been around...believe in almost anything...even...you."
  501.         cursound1 = PlayVoice(indy, in_believeall, 1.0, 0);
  502.         in_keyTrack1 = PlayKey(indy, in_handsONhips, 2, 0x10, 0);
  503.         PlayKey(indy, in_handsTOhips, 4, 0x12, 1);
  504.         Sleep(2.5);
  505.         PlayKey(indy, in_pushHat, 4, 0x12, 1);
  506.         WaitForSound(cursound1);
  507.         StopKey(indy, in_keyTrack1, 0.5);
  508.  
  509.         # Sophia: "No, not them...something...strange."
  510.         cursound1 = PlayVoice(sophia, so_strange, 1.0, 0);
  511.         PlayKey(sophia, so_odd, 4, 0x12, 0);
  512.         MoveToFrame(cam_6, 1, 0.28);
  513.         SetCameraInterpSpeed(2, 4.0);
  514.         Sleep(0.01);
  515.         SetCameraSecondaryFocus(2, ct_6b);
  516.         SetCAmeraFOV(35, 1, 4.0);
  517.         # gestures here
  518.         WaitForSound(cursound1);
  519.  
  520.         # Sophia opens the door and is CAPTURED!
  521.         SetCollideType(commie1, 0);
  522.         SetCollideType(sophia, 0);
  523.         ClearThingFlags(commie1, 0x80000);
  524.         AISetCutsceneMode(commie1);
  525.         Sleep(0.01);
  526.         MoveToFrame(ct_6b, 1, 0.35);
  527.         SetCAmeraFOV(32, 1, 1.0);
  528.         
  529.         # music cue for sophia's abduction
  530.         PlaySoundLocal(russ_bold, 1.0, 1, 0x0, 0);
  531.  
  532.         so_keyTrack1 = PlayKey(sophia, so_captured, 4, 0x12, 0);
  533.         cm_keyTrack1 = PlayKey(commie1, cm_grab, 4, 0x12, 0);
  534.         Sleep(0.47); # 14 nominal anim frames
  535.         call OpenDoor;
  536.         Sleep(2.8); # 84 nominal anim frames
  537.         PlayVoice(sophia, so_indee, 1.0, 0);
  538.         Sleep(2.5); # wait til sophia & captor are out of view
  539.  
  540.         # Sophia has disappeared...
  541.         StopKey(sophia, so_keyTrack1, 0.0);
  542.         StopKey(commie2, cm_keytrack1, 0.0);
  543.         SetThingFlags(sophia, 0x80000);
  544.         SetThingFlags(commie1, 0x80000);
  545.         DestroyThing(sophia);
  546.         DestroyThing(commie1);
  547.  
  548.         # 2nd Soviet steps forward to confront Indy...
  549.         CopyOrientAndPos(in_mk_4, indy); # final mark
  550.         ClearThingFlags(commie2, 0x80000);
  551.         AISetCutsceneMode(commie2);
  552.         AISetMoveSpeed(commie2, 1.3);
  553.         AISetLookThing(commie2, indy);
  554.         AISetMoveThing(commie2, cm_mk_1, 0);
  555.  
  556.         # Cam retreats to frame both...
  557.         SetCameraInterpSpeed(2, 2.0);
  558.         Sleep(0.5);
  559.         SetCameraFocus(2, cam_7);
  560.         SetCameraSecondaryFocus(2, commie2); # rare instance using actor as tgt
  561.         SetCameraFOV(65, 1, 2.0);
  562.  
  563.         # Soldier: "This is a restricted area!"
  564.         PlayVoice(commie2, cm_restricted, 1.0, 0);
  565.         AISetLookThing(commie2, indy);
  566.         AISetMoveThing(commie2, cm_mk_2, 0);
  567.         Sleep(2.0);        
  568.  
  569.         SetCollideType(worklite_2, liteCollType); # back to normal
  570.         SetCollideType(worklite_3, liteCollType);
  571.         CopyOrientAndPos(indy, player); # move player to actor's spot
  572.     #    AIClearMode(commie2, 0x2000); # start bad guy AI
  573.         AIClearCutSceneMode(commie2);    
  574.         camPosThing = cam_7;
  575.  
  576.         call backtoplay;
  577.     }
  578.  
  579.     return;
  580.  
  581. # ...................................................................
  582.  
  583. OpenDoor:
  584.  
  585.     Rotate(door, 90, 1, duration);
  586.  
  587.     # TO DO: set any needed sector visibility changes here
  588.  
  589.     #PlaySoundThing(dr_open, door, 1, 5, 10, 0);
  590.  
  591.     return;
  592.  
  593. # ...................................................................
  594.  
  595. backtoplay:
  596.  
  597.     SetThingMaxRotVel(indy, in_rotRate);
  598.     #SetThingMaxRotVel(sophia, so_rotRate);
  599.     AIClearCutSceneMode(indy);
  600.     #AIClearCutSceneMode(sophia);
  601.     camPos = GetThingPOS(camPosThing); 
  602.     SetCameraPosition(1, camPos); # prep to swing back to follow-cam
  603.     SetCameraLookInterp(2, 0); # kill pan & tilt mode
  604.     SetCameraPosInterp(2, 0); # kill dolly mode
  605.     Sleep(0.01);
  606.     SetThingFlags(indy, 0x80000); # hide actor    
  607.     ClearThingFlags(player, 0x80000); # show player
  608.     ClearActorFlags(player, 0x200000); # player in control
  609.     SetCurrentCamera(curcam);
  610.     ResetCameraFOV(0, 0.0);
  611.  
  612.     EndCutscene();
  613.  
  614.     return;
  615.  
  616. # ...................................................................
  617.  
  618. end
  619.  
  620.  
  621.